ouroboros git
-─
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣄⠘⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠉⠻⣷⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⡀⠀⠈⠙⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡏⠛⢿⣶⣤⣀⠀⢹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡀⠀⠀⠉⠻⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠻⣿⣦⡀⠀⠀⠀⠈⠙⠛⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠃⠀⠙⢿⣿⣷⣤⣄⡀⠀⠀⠈⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡀⠀⠀⠀⠈⠛⠿⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣟⡘⣿⣦⣄⡀⠀⠀⠀⠀⠀⠉⠉⢉⣉⣽⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠛⠿⠿⢿⣿⣿⣿⣷⣶⣶⣶⣶⣾⡿⠿⠛⠋⠙⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠁⠀⠀⠀⠀⠀⠀⢈⣁⣉⣉⣉⣁⣈⠀⠀⠀⠀⠀⠀⠀⠈⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠏⠀⠀⠀⠀⢀⠔⠈⠻⣿⣿⣿⣿⣿⣿⣿⣿⠛⠁⠂⡀⠀⠀⠀⠀⠹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠀⠀⠀⠀⠀⣿⠀⠀⠀⠿⠿⠿⠿⠿⠿⠿⠿⠀⠀⠀⣿⠀⠀⠀⠀⠀⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⠀⠀⠀⠀⡠⠁⠀⠀⠀⢀⣀⠀⣀⣀⢀⣀⡀⠀⠀⠀⠈⢦⡀⠀⠀⠀⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣶⣶⠟⠀⠀⠀⠀⢐⣛⡛⢘⣛⣛⡈⣛⣛⡀⠀⠀⠀⠀⠻⣷⣶⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠋⠀⠀⠀⠀⢀⣭⣭⢁⣭⣭⣭⣅⢩⣭⣭⡀⠀⠀⠀⠀⠙⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠁⠀⠀⠀⠀⠀⠈⠉⠉⠀⠉⠉⠉⠉⠀⠉⠉⠁⠀⠀⠀⠀⠀⠈⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣶⣶⣶⣶⣶⣶⣶⣶⣶⣶⣶⣶⣶⣶⣶⣶⣶⣶⣶⣶⣶⣶⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
partyline
A group voice application for Reticulum, built on LXST and inspired by Mumble
Contents
Features
• Encrypted, realtime group voice over any Reticulum transport capable of >6 kilobits per second
• An easy to host, lightweight server and protocol. Spin up a Partyline server in under 30 seconds
• Per room access and channel control: open, identified users only, allow lists of identity hashes, or a password. Servers can also require a password or an allow list
• Dial-in: rnphone and other LXST clients such as Sideband and MeshChatX can call the server and land in a room, when enabled
• Rooms each with their own LXST codec set by the server. Opus for fast links, Codec2 down to 700 bps for slow ones
• GUI and terminal client
Installation
Requires Python 3.11 or newer, Reticulum, and LXST.
git clone https://github.com/RFnexus/partyline
cd partyline
pip install .
Or install over Reticulum with rngit:
git clone rns://4cf8a0651c4d73cacd0f93ac1d95e80a/public/partyline
For a system wide push to talk key, install the optional extra:
pip install ".[hotkeys]"
This installs three commands: partyline, partyline-server and partyline-client.
Running
Start the GUI client:
partyline
Connect opens the server browser. Add a server by its hash, or use the browser to find servers discovered from announces. Double click a room to join it. Settings holds the audio devices, transmit mode, push to talk key, and appearance options.
Terminal client:
partyline-client HASH --name Bob --room Lobby
Commands are: /join, /say, /poke, /who, /mute, /deaf. Type /ptt to toggle push to talk. Operators also have /kick, /ban, /smute, /op and /move.
Server
Start a server:
partyline-server --name "My server" --profile opus-high
The server prints its destination hash for clients, and with dial-in enabled the number rnphone users call. For rooms, access lists, operators, a server password and dial-in, copy server_example.json and start with:
partyline-server --config server.json
Available profile codecs for rooms:
| Profile | Bitrate | Best for |
| ---- | ---- | ---- |
| opus-high | Opus voice, 16 kbps | Voice on fast links |
| opus-med | Opus voice, 8 kbps | good default |
| opus-low | Opus voice, 6 kbps | Voice on tight links |
| c2-3200 | Codec2, 3200 bps | Clearest Codec2 voice, slow links |
| c2-2400 | Codec2, 2400 bps | Voice on slower links |
| c2-1200 | Codec2, 1200 bps | Voice on very slow links |
| c2-700 | Codec2, 700 bps | Voice on the slowest links |
| music-low | Opus music, 14 kbps | Music or broadcast on modest links |
| music-med | Opus music, 28 kbps | Music or broadcast, balanced |
| music-high | Opus music, 56 kbps | Best music quality, needs a fast link |
The Opus voice and Codec2 profiles are meant for voice; the music profiles are for streaming music or broadcasting to a room. As a rule, use the highest bitrate your link can carry. See server_example.json for the full list of options.
Systemd unit
Find the server command with which partyline-server, then create /etc/systemd/system/partyline.service:
[Unit]
Description=Partyline voice server
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=partyline
ExecStart=/usr/local/bin/partyline-server --config /home/partyline/server.json
Restart=on-failure
[Install]
WantedBy=multi-user.target
Then:
sudo systemctl daemon-reload
sudo systemctl enable --now partyline
Push to talk rooms
PTT, or slow-mode rooms, are rooms designed to work over slower links like LoRa and packet radio, or anything under 7 kbps. They can co-exist with regular rooms in a Partyline server, allowing both fast and slow clients.
Unlike regular rooms there is a bit of latency. PTT rooms pack outgoing audio to fill the link's MTU, sending fewer, fuller packets instead of one frame per packet, and give every listener a larger receive jitter buffer to smooth out the bursty arrival you get over radio mediums like LoRa.
Mark any room push to talk with "ptt": true. Optionally set "ptt_jitter_ms" to change the buffer depth. It's recommended to use PTT rooms with the Codec2 profiles.
{"name": "LoRa 1200", "profile": "c2-1200", "ptt": true, "description": "Slow-link push to talk"}
{"name": "Packet Radio Net 700", "profile": "c2-700", "ptt": true, "ptt_jitter_ms": 9000}
Music and broadcasting
Server operators can configure broadcast-only rooms for high quality music and audio using LXST's Opus CELT profiles: music-high, music-med and music-low. A music room is a special room where only the listed identities may send audio; everyone else listens and can still chat. Add the allowed identity hashes, separated by commas, under music:
{"name": "Broadcast", "profile": "music-med", "music": ["0123456789abcdef0123456789abcdef"], "description": "Music/broadcast room. Only listed identities may talk."}
An example music bot can be found under bots/music_bot.py.
Credits
• Mumble. Great software that just works. The best UI is stolen UI
• Tree, toolbar and application icons from Tabler Icons
• Sound effects from Kenney interface sounds
• Tin can telephone drawing in the logo from openclipart.org
Served by rngit 1.5.2 - Generated in 0.01s